package algorithm.easy;

/**
 * 相关企业
 * 给你一个长度为 n 下标从 0 开始的字符串 blocks ，blocks[i] 要么是 'W' 要么是 'B' ，表示第 i 块的颜色。字符 'W' 和 'B' 分别表示白色和黑色。
 * <p>
 * 给你一个整数 k ，表示想要 连续 黑色块的数目。
 * <p>
 * 每一次操作中，你可以选择一个白色块将它 涂成 黑色块。
 * <p>
 * 请你返回至少出现 一次 连续 k 个黑色块的 最少 操作次数。
 */

public class MinimumRecolors2379 {

    //双指针
    public int minimumRecolors(String blocks, int k) {
        char[] array = blocks.toCharArray();
        int cur = 0;
        for (int i = 0; i < k; i++) {
            if (array[i] == 'W') {
                cur++;
            }
        }
        int res = cur;
        for (int i = 0; i + k < array.length; i++) {
            if (array[i] == 'W' && array[i + k] == 'B') {
                cur--;
            } else if (array[i] == 'B' && array[i + k] == 'W') {
                cur++;
            }
            res = Math.min(res, cur);
        }
        return res;
    }
}
